آموزش کار با تاریخ شمسی در زبان سی شارپ

دوشنبه، 06 اسفند 1403
آموزش کار با تاریخ شمسی در زبان سی شارپ محمد داداش رستمی
محمد داداش رستمی

محمد داداش رستمی

توسعه دهنده فول استک

کار با تاریخ شمسی در سی شارپ با استفاده از MD.PersianDateTime

در این مقاله، قصد داریم با هم نگاهی به یکی از کتابخانه‌های کاربردی در زبان سی شارپ بیندازیم؛ کتابخانه‌ای که مدیریت تاریخ‌های شمسی، هجری قمری و میلادی را بسیار ساده می‌کند. اگر تا به حال نگران تبدیل تاریخ‌ها برای ذخیره در پایگاه داده یا نمایش مناسب برای کاربر بوده‌اید، MD.PersianDateTime می‌تواند بهترین راه‌حل برای شما باشد.

چرا به تبدیل تاریخ نیاز داریم؟

همانطور که می‌دانید، در دنیای نرم‌افزار، کار با تاریخ‌ها همیشه از اهمیت ویژه‌ای برخوردار است. معمولا تاریخ‌ها به صورت میلادی در پایگاه‌های داده ذخیره می‌شوند؛ اما برای کاربران ایرانی نمایش تاریخ به صورت شمسی بسیار مناسب‌تر و قابل درک‌تر است. اینجاست که کتابخانه MD.PersianDateTime وارد عمل می‌شود و با ارائه امکاناتی مانند Parse کردن تاریخ، تبدیل به DateTime و اعمال فرمت‌های دلخواه، کار شما را بسیار آسان می‌کند.

معرفی MD.PersianDateTime

کتابخانه MD.PersianDateTime یک کتابخانه قدرتمند است که قابلیت‌های زیر را به شما ارائه می‌دهد:

  • ایجاد شیء تاریخ: امکان ساخت شیء تاریخ جدید از روی یک شیء DateTime یا ورودی‌های شمسی به صورت دستی.
  • Parse کردن تاریخ: تبدیل رشته‌های ورودی به تاریخ به سادگی امکان‌پذیر است.
  • تبدیل به DateTime: تاریخ شمسی را به راحتی به تاریخ میلادی تبدیل کنید.
  • فرمت‌دهی سفارشی: امکان نمایش تاریخ به صورت دلخواه با استفاده از فرمت‌های مختلف.
  • عملیات ریاضی روی تاریخ‌ها: افزودن یا کم کردن روز، ماه، سال و ... به تاریخ.
نصب کتابخانه

ابتدا باید این کتابخانه کاربردی را به پروژه خود اضافه کنید. با استفاده از NuGet Package Manager این کار بسیار ساده است.

برای .Net Framework
Install-Package MD.PersianDateTime
برای .Net Core
Install-Package MD.PersianDateTime.Standard

استفاده از کتابخانه

  1. ایجاد شیء تاریخ

می‌توانید شیء تاریخ را به روش‌های مختلف ایجاد کنید:

الف) با استفاده از DateTime:

var persianDateTime = new PersianDateTime(DateTime.Now);

ب) با استفاده از تاریخ شمسی:

var persianDateTime = new PersianDateTime(1394, 5, 9);
var persianDateTime = new PersianDateTime(1394, 5, 9, 10, 5, 3);
var persianDateTime = new PersianDateTime(1394, 5, 9, 10, 5, 3, 103);

ج) استفاده از Parse برای تبدیل رشته به تاریخ:

var persianDateTime1 = PersianDateTime.Parse("دوشنبه 05 مرداد 1395 ساعت 04:03");
var persianDateTime2 = PersianDateTime.Parse(13901229); // تاریخ به صورت عددی
var persianDateTime2 = PersianDateTime.Parse(13901229231232102); // تاریخ به همراه زمان تا دقت میلی‌ثانیه
var persianDateTime3 = PersianDateTime.Parse("چهارشنبه، ۱۰ دی ۱۳۹۳ ۱۲:۳۸");
var persianDateTime4 = PersianDateTime.Parse("24 آذر 1393");
var persianDateTime5 = PersianDateTime.Parse("د 24 آذر 1393 4:2:5:5 ب.ظ");
var persianDateTime6 = PersianDateTime.Parse("1393/02/01");
var persianDateTime7 = PersianDateTime.Parse("1393/02/01 02:03");
var persianDateTime8 = PersianDateTime.Parse("1393-02-01 02:03:10:30");
var persianDateTime9 = PersianDateTime.Parse("93-1-1 3:15 ب.ظ");
var persianDateTime10 = PersianDateTime.Parse("جمعه 93/2/1 ساعت 3:2 ب.ظ");

د) دریافت تاریخ امروز و زمان کنونی:

var persianDateTime1 = PersianDateTime.Now;
var persianDateTime2 = PersianDateTime.Today; // بدون زمان

تبدیل به DateTime

تبدیل شیء تاریخ شمسی به شیء DateTime کار بسیار ساده‌ای است:

DateTime dateTime = PersianDateTime.Now;
// یا
DateTime datetime = persianDateTime.ToDateTime();
دریافت تاریخ هجری قمری
var persianDateTimeNow = PersianDateTime.Now;
var hijriDateTime = persianDateTimeNow.ToHijri(-1);
Console.WriteLine($"{hijriDateTime.Year}-{hijriDateTime.Month}-{hijriDateTime.Day}");

فرمت‌های مختلف نمایش تاریخ

کتابخانه MD.PersianDateTime از فرمت‌های متنوعی برای نمایش تاریخ پشتیبانی می‌کند. برخی از این فرمت‌ها عبارتند از:

  • yyyy: سال چهار رقمی
  • yy: سال دو رقمی
  • MMMM: نام فارسی ماه
  • MM: عدد دو رقمی ماه
  • M: عدد یک رقمی ماه
  • dddd: نام فارسی روز هفته
  • dd: عدد دو رقمی روز ماه
  • d: عدد یک رقمی روز ماه
  • HH: ساعت دو رقمی (00 تا 24)
  • H: ساعت یک رقمی (0 تا 24)
  • hh: ساعت دو رقمی (00 تا 12)
  • h: ساعت یک رقمی (0 تا 12)
  • mm: دقیقه دو رقمی
  • m: دقیقه یک رقمی
  • ss: ثانیه دو رقمی
  • s: ثانیه یک رقمی
  • fff: میلی‌ثانیه سه رقمی
  • ff: میلی‌ثانیه دو رقمی
  • f: میلی‌ثانیه یک رقمی
  • tt: نمایش ب.ظ یا ق.ظ
  • t: حرف اول ب.ظ یا ق.ظ

نتیجه‌گیری

استفاده از MD.PersianDateTime به شما این امکان را می‌دهد تا به سادگی و بدون دردسر با تاریخ‌های شمسی، هجری قمری و میلادی کار کنید. این کتابخانه با ارائه امکانات گسترده‌ای از قبیل تبدیل تاریخ، فرمت‌دهی دلخواه و انجام عملیات محاسباتی روی تاریخ‌ها، انتخاب بسیار مناسبی برای پروژه‌های سی شارپ است.